package com.thirdgroup.dao.base;


import java.sql.Connection;
import java.util.List;

//Data Access Object
public interface DAO <T>{

    /**
     * 通用增删改
     * 考虑事务
     * @param sql  sql语句
     * @param args  sql语句中的参数
     * @return 受影响行数
     */
    public int executeSQL(String sql, Object... args);


    /**
     * 通用查询,返回一个对象
     * @param sql  sql语句
     * @param args  sql语句中的参数
     * @return 查询到的对象
     */
    public T findOne( String sql, Object... args);

    /**
     * 通用查询,返回一个对象列表
     * @param sql  sql语句
     * @param args  sql语句中的参数
     * @return 查询到的对象列表
     */
    public List<T> findAll(String sql, Object... args);

    /**
     * 获取一个值，例如最大值、统计等
     * @param sql  sql语句
     * @param args  sql语句中的参数
     * @return 查询到的值
     */
    public Object getValue(String sql, Object... args);
}
